package ar.com.gestion.vistas;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import ar.com.gestion.GestionUtils;
import ar.com.gestion.bo.UsuariosBO;
import ar.com.gestion.componentes.CustomComboModel;
import ar.com.gestion.dominio.Cliente;
import ar.com.gestion.dominio.Producto;
import ar.com.gestion.listeners.VenderListener;
import ar.com.gestion.springcontext.SpringContext;
import ar.com.gestion.usuarios.CancelarListener;
import ar.com.gestion.ventas.ModuloVentas;

public class ViewVender extends JFrame {

	private UsuariosBO usuariosBO = (UsuariosBO) SpringContext.getContext()
			.getBean("usuariosBO");
	
	private ModuloVentas moduloVentas = (ModuloVentas) SpringContext.getContext()
			.getBean("moduloVentas");

	private JCheckBox checkBox;
	private JComboBox<Cliente> comboCliente;
	private JTextField textFiado;
	private JComboBox<Integer> comboPagos;
	private JTextField total;
	private JButton aceptar, cancelar;
	private Integer [] labels = {1,2,3,4,5,6,7,8,9,10,11,12};
	private float totalVenta =0; 
	private JLabel labelTotal;

	public ViewVender() {

		LinkedList<Producto> listaAVender = moduloVentas.getListaAVender();
		for (Producto producto : listaAVender) {
			
			totalVenta= totalVenta + producto.getPrecio();
			
		}
		
				
		// inicializacion
		checkBox = new JCheckBox();
		comboCliente = new JComboBox<Cliente>();
		textFiado = new JTextField();
		
		comboPagos = new JComboBox<Integer>(labels);
		total = new JTextField();
		aceptar = new JButton("Aceptar");
		cancelar = new JButton("Cancelar");

		total.setText(String.valueOf(totalVenta));
		
		total.setEnabled(false);

		List<Cliente> obtenerTodosLosClientes = usuariosBO
				.obtenerTodosLosClientes();

		CustomComboModel customComboModel = new CustomComboModel();

		if (obtenerTodosLosClientes.size() > 0) {
			comboCliente.setModel(customComboModel);
		}
		customComboModel.setListaClientes(obtenerTodosLosClientes);

		this.invertirSeleccion();

		setLayout(new GridLayout(7, 2));
		
		
		
		add(new JLabel("Monto total"));
		labelTotal = new JLabel(total.getText());
		add(labelTotal);
		
		add(new JLabel("Fiado"));
		add(checkBox);

		add(new JLabel("Cliente"));
		add(comboCliente);

		add(new JLabel("Fiado"));
		add(textFiado);

		add(new JLabel("Pagos"));
		add(comboPagos);

		add(new JLabel("Total Cuota"));
		add(total);

		add(aceptar);
		add(cancelar);
		
		
		
		

		comboPagos.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
			
				int cantCuotas =(int) comboPagos.getSelectedItem();
				Float nuevoTotal= totalVenta/cantCuotas;
				total.setText( String.valueOf(nuevoTotal));  
				
				
			}
		});
		
		
		
		checkBox.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				invertirSeleccion();

			}
		});

		aceptar.addActionListener(new VenderListener(this));
		cancelar.addActionListener(new CancelarListener(this));
		setSize(238, 177);
		setVisible(true);
		GestionUtils.obtenerUbicacionEnPantalla(this);
		setResizable(false);

	}

	public void invertirSeleccion() {
		boolean selected = checkBox.isSelected();

		textFiado.setEnabled(selected);

	}

	public JCheckBox getCheckBox() {
		return checkBox;
	}

	public void setCheckBox(JCheckBox checkBox) {
		this.checkBox = checkBox;
	}

	public JComboBox<Cliente> getComboCliente() {
		return comboCliente;
	}

	public void setComboCliente(JComboBox<Cliente> comboCliente) {
		this.comboCliente = comboCliente;
	}

	public JTextField getTextFiado() {
		return textFiado;
	}

	public void setTextFiado(JTextField textFiado) {
		this.textFiado = textFiado;
	}


	public JComboBox<Integer> getComboPagos() {
		return comboPagos;
	}

	public void setComboPagos(JComboBox<Integer> comboPagos) {
		this.comboPagos = comboPagos;
	}

	public JTextField getTotal() {
		return total;
	}

	public void setTotal(JTextField total) {
		this.total = total;
	}

	public JLabel getLabelTotal() {
		return labelTotal;
	}

	public void setLabelTotal(JLabel labelTotal) {
		this.labelTotal = labelTotal;
	}
	
	

}
